import betterSqlite3Type from "better-sqlite3";

export function InitializeMessageTables(db: betterSqlite3Type.Database): void {
  db.exec(`
        CREATE TABLE IF NOT EXISTS message
        (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            ownerId     INTEGER NOT NULL,       -- 消息拥有者
            uuid        TEXT    NOT NULL,       -- 消息ID
            sendId      INTEGER NOT NULL,       --发送方ID
            toId        INTEGER   DEFAULT NULL, -- 接收方ID
            groupId     INTEGER   DEFAULT NULL, -- 群ID(用户)
            sessionId   TEXT    NOT NULL,       -- 所属会话ID
            chatType    INTEGER NOT NULL,       -- 1:单聊 2:群聊 3:好友通知 4:通话通知
            messageType INTEGER NOT NULL,       -- 1:文本 2:图片 3:文件....
            status      INTEGER DEFAULT 1,      -- 1:发送成功 2:失败
            quotationId TEXT DEFAULT Null,      -- 引用消息ID
            aitIds      TEXT DEFAULT Null,      -- 艾特用户IDs
            fileName    TEXT DEFAULT Null,      -- 文件名
            fileUrl     TEXT DEFAULT Null,      -- 文件URL
            localPath   Text DEFAULT Null,      -- 文件本地地址
            fileSize    INTEGER DEFAULT Null,   -- 文件大小(字节)
            content     TEXT DEFAULT Null,      -- 消息内容
            callStatus  INTEGER DEFAULT Null,   -- 通话状态
            createdAt TEXT DEFAULT (strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime')),
            updatedAt TEXT DEFAULT (strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime')),
            CHECK (messageType BETWEEN 0 AND 9)
        );

        -- 创建索引
        CREATE INDEX IF NOT EXISTS idx_message_session ON message (sessionId);
        CREATE INDEX IF NOT EXISTS idx_message_sender ON message (sendId);
        CREATE INDEX IF NOT EXISTS idx_message_timestamp ON message (createdAt);
        CREATE INDEX IF NOT EXISTS idx_message_composite ON message (sessionId, createdAt);
    `);
}
